import lejos.nxt.MotorPort;
import lejos.nxt.SensorConstants;
import lejos.nxt.SensorPort;
import lejos.nxt.SensorPortListener;

public class MySensorPortListener implements SensorPortListener{
	private int s1Digi0;
	private int s1Digi1;
	private int s1Ana1;
	
	public MySensorPortListener() {
		SensorPort.S1.setSensorPinMode(SensorPort.SP_DIGI0, SensorPort.SP_MODE_INPUT);
		SensorPort.S1.setSensorPinMode(SensorPort.SP_DIGI1, SensorPort.SP_MODE_INPUT);
		
		this.s1Digi0 = SensorPort.S1.getSensorPin(SensorPort.SP_DIGI0);
		this.s1Digi1 = SensorPort.S1.getSensorPin(SensorPort.SP_DIGI0);
		
		SensorPort.S1.setTypeAndMode(SensorPort.SP_ANA, SensorConstants.MODE_RAW);
		
		this.s1Ana1 = SensorPort.S1.readRawValue();
	}
	
	public void stateChanged(SensorPort arg0, int arg1, int arg2) {
		SensorPort.S1.setSensorPinMode(SensorPort.SP_DIGI0, SensorPort.SP_MODE_INPUT);
		SensorPort.S1.setSensorPinMode(SensorPort.SP_DIGI1, SensorPort.SP_MODE_INPUT);
		
		if (s1Digi0 != SensorPort.S1.getSensorPin(SensorPort.SP_DIGI0)) {
			s1Digi0 = SensorPort.S1.getSensorPin(SensorPort.SP_DIGI0);
			MotorPort.A.controlMotor(100, MotorPort.BACKWARD);
		}
		
		if (s1Digi1 != SensorPort.S1.getSensorPin(SensorPort.SP_DIGI1)) {
			s1Digi1 = SensorPort.S1.getSensorPin(SensorPort.SP_DIGI1);
			MotorPort.A.controlMotor(100, MotorPort.FORWARD);
		}
		
		SensorPort.S1.setTypeAndMode(SensorPort.SP_ANA, SensorConstants.MODE_RAW);
		
		if (s1Ana1 != SensorPort.S1.readRawValue()) {
			s1Ana1 = SensorPort.S1.readRawValue();
			if(s1Ana1 < 300) {
				MotorPort.A.controlMotor(100, MotorPort.STOP);
				MotorPort.A.controlMotor(100, MotorPort.FORWARD);
				try {
					Thread.sleep(500);
				}
				catch(Exception e) {
					System.out.println("Fehler");
				}
			}
			else if(s1Ana1 > 950) {
				MotorPort.A.controlMotor(100, MotorPort.STOP);
				MotorPort.A.controlMotor(100, MotorPort.BACKWARD);
				try {
					Thread.sleep(500);
				}
				catch(Exception e) {
					System.out.println("Fehler");
				}
			}
		}
	}
}
